
package com.hlkj.pay.service.ad.impl;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;
import java.util.Set;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.hlkj.framework.common.pojo.PageResult;
import com.hlkj.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.hlkj.pay.dto.ad.query.AdMediaQueryDto;
import com.hlkj.pay.infrastructure.mapper.ad.AdMediaMapper;
import com.hlkj.pay.infrastructure.model.ad.AdMediaDO;
import com.hlkj.pay.service.ad.IAdMediaService;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

/**
 * @author HlpayTeam
 * @date 2024/10/23 9:14
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class AdMediaServiceImpl implements IAdMediaService {

    private final AdMediaMapper adMediaMapper;

    @Override
    public PageResult<AdMediaDO> queryPage(AdMediaQueryDto adMediaQueryDto) {
        return adMediaMapper.selectPage(adMediaQueryDto, buildWrapper(adMediaQueryDto));
    }

    @Override
    public List<AdMediaDO> queryList(AdMediaQueryDto adMediaQueryDto) {
        return adMediaMapper.selectList(buildWrapper(adMediaQueryDto));
    }

    @Override
    public List<AdMediaDO> queryList(Set<Long> ids) {
        return adMediaMapper.selectBatchIds(ids);
    }

    @Override
    public AdMediaDO queryById(Long id) {
        return adMediaMapper.selectById(id);
    }

    @Override
    public void saveAdMedia(AdMediaDO adMediaDO) {
        adMediaMapper.insert(adMediaDO);
    }

    @Override
    public void updateAdMedia(AdMediaDO adMediaDO) {
        adMediaMapper.updateById(adMediaDO);
    }

    @Override
    public void delAdMedia(Long id) {
        adMediaMapper.deleteById(id);
    }

    /**
     * 查询条件封装
     *
     * @param adMediaQueryDto
     * @return
     */
    LambdaQueryWrapper<AdMediaDO> buildWrapper(AdMediaQueryDto adMediaQueryDto) {
        LambdaQueryWrapperX<AdMediaDO> queryWrapper = new LambdaQueryWrapperX<>();
        queryWrapper.eqIfPresent(AdMediaDO::getName, adMediaQueryDto.getName());
        queryWrapper.likeIfPresent(AdMediaDO::getName, adMediaQueryDto.getLikeName());
        return queryWrapper;
    }
}
